Ce notebook vise à donner un aperçu de l'évolution du nombre de packages présents dans chacune des sources considérées.
In [21]:
%matplotlib inline
from IPython.display import set_matplotlib_formats
import matplotlib.pyplot as plt
set_matplotlib_formats('pdf')
import pandas
Nous allons commencer par charger les données en provenance des différentes sources. Le fichier R-Packages.csv
contient les données utiles pour Github : la liste des packages présents sur Github (colonne github == 1
) avec la date de création du dépôt.
Le fichier cran-number-packages.csv
contient, pour chaque date, le nombre de paquets présents à cette release.
Enfin, le fichier bioconductor-number-packages.csv
contient, pour chaque release/date, le nombre de paquets présents à cette release pour chaque catégorie (software, experiment et annotation).
In [22]:
github_ = pandas.DataFrame.from_csv('../data/R-Packages.csv')
bioconductor_ = pandas.DataFrame.from_csv('../data/bioconductor-number-packages.csv', header=None)
cran_ = pandas.DataFrame.from_csv('../data/cran-number-packages.csv')
In [23]:
github_cran = github_.query('cran == 1 and github == 1 and canonical == 1')[['creation']]
github_cran['creation'] = pandas.to_datetime(github_cran['creation'])
github_cran = github_cran.set_index('creation')
github_cran['cran github'] = 1
github_cran = github_cran.sort_index()
github_cran = github_cran.cumsum()
In [24]:
github = github_.query('github == 1 and cran != 1 and bioconductor != 1 and canonical == 1')[['creation']]
github['creation'] = pandas.to_datetime(github['creation'])
github = github.set_index('creation')
github['github'] = 1
github = github.sort_index()
github = github.cumsum()
In [25]:
bioconductor = bioconductor_.rename(columns={1: 'BiocSoft', 2: 'BiocAnnotation', 3: 'BiocExperiment', 4: 'date'})
# bioconductor['BiocDatasets'] = bioconductor['BiocAnnotation'] + bioconductor['BiocExperiment']
bioconductor['Bioconductor'] = bioconductor['BiocSoft'] # + bioconductor['BiocDatasets']
bioconductor = bioconductor.set_index('date')
bioconductor = bioconductor.sort_index()[['Bioconductor']]
In [26]:
cran = cran_[['cran']]
cran = cran.sort_index()
Maintenant, nous mergeons les informations afin de pouvoir les afficher.
In [28]:
packages = cran.join(bioconductor, how='outer').join(github, how='outer').join(github_cran, how='outer').resample('1M', fill_method='pad')
t = packages['2013-09-03':'2014-12-31'][['cran', 'github', 'cran github', 'Bioconductor']].plot(
style=['green', 'blue', 'purple', 'red'], logy=True, figsize=(7,5), title='Evolution of the number of R packages\n')
t.set_xlabel('date')
t.set_ylabel('number of packages (in logarithmic scale)')
t.legend(('CRAN', 'GitHub \ (CRAN $\cup$ BioConductor) ', 'GitHub $\cap$ CRAN', 'BioConductor'), loc='best')
Out[28]: